package com.example.runningdemo.java8;

import cn.hutool.core.util.StrUtil;

/**
 * @program: Running-Demo
 * @description: 工具类
 * @author: kangwei
 * @create: 2024-08-12 08:39
 **/
public class VUtils {

    /**
     * 函数式接口简化if else 异常抛出
     * ture -抛出异常
     *
     * @param trueOrFalse
     * @return
     */
    public static ThrowExceptionFunction isTrue(boolean trueOrFalse) {
        return (errorMessage -> {
            if (trueOrFalse) {
                throw new RuntimeException(errorMessage);
            }
        });
    }

    /**
     * 函数式接口简化 if else 分支
     * 当条件为true -  runnable1.run();
     * 当条件为false -  runnable2.run();
     *
     * @param trueOrFalse
     * @return
     */
    public static BranchHandleFunction isTureOrFalse(boolean trueOrFalse) {
        return (runnable1, runnable2) -> {
            if (trueOrFalse) {
                runnable1.run();
            } else {
                runnable2.run();
            }
        };
    }


    /**
     * 当字符串为空时：执行runnable.run();
     * 当字符串不为空时，执行consumer.accept(value);
     *
     * @param value
     * @return
     */
    public static PresentOrElseHandleInterface isEmptyOrNotEmpty(String value) {
        return (consumer, runnable) -> {
            if (StrUtil.isEmpty(value)) {
                runnable.run();
            } else {
                consumer.accept(value);
            }
        };
    }

    public static void main(String[] args) {
//        isTrue(true).throwMessage("验证异常");
//        isTureOrFalse(true).trueOrFalseHandler(() -> {
//            System.out.println("设置成功");
//        }, () -> {
//            System.out.println("设置失败");
//        });

        // 测试
        isEmptyOrNotEmpty("12").presentOrElseHandle(System.out::println, () -> {
            System.out.println("字符串为空");
        });

    }
}
